<?php

/**
 * 
 * \file Intervenants.php
 * \author Romain Daniel
 * \version 0.1
 * \date 20 avril 2009
 *
 */

require("../phpmailer/class.phpmailer.php");
include_once("portail.php");

/** 
 * \class Intervenants
 * \brief Classe contenant toutes les fonctions relatives aux intervenants.
 * 
 */
class Intervenants {

	/** \fn __construct ()
	 * \brief Constructeur de la classe
	 * 
	 * @return Pas de retour
	 */
	public function __construct () { }

	/** \fn creerIntervenant($login,$mdp,$email,$createur)
 	 * \brief Cree un intervenant
 	 * 
 	 * Fonction creant un intervenant unique dans la BDD et retournant TRUE si l'insertion a reussi, FALSE sinon.
 	 *
 	 * @param $login string correspondant au login de l'intervenant
 	 * @param $mdp string correspondant au mot de passe de l'intervenant
 	 * @param $email string correspondant a l'adresse email de l'intervenant
 	 * @param $createur string correspondant au login de l'utilisateur creant l'intervenant (pour fichier .log)
 	 * @return $r bool contenant le resultat de la creation de l'intervenant
 	 */
	public function creerIntervenant($login,$mdp,$email,$createur) {
	
		//recherche s'il y a un intervenant $login dans la table portail
		$q0 = "SELECT login_p FROM portail WHERE login_p='$login'";
		$r0 = mysql_query($q0) or die('Selection impossible');
		
		//si intervenant inexistant
		if(mysql_num_rows($r0) < 1) {
		
			//requete SQL permettant de creer un nouvel intervenant
			$q = "INSERT INTO portail (login_p,password_p,droit_p,email_p) VALUES('$login','$mdp','intervenant','$email')";
			//execution de la requete
			$r = mysql_query($q) or die('Creation impossible');
			
			$p = new Portail();
			$p->creerLog("Intervenant \"".$login."\" cree par \"".$createur."\" a ","../");
			//ecrit dans un fichier une_date.log la ligne "Intervenant un_login cree par un_createur a telle_heure."

			return $r;
		
		}
		
		else {
			echo "Utilisateur deja existant dans la BDD";
			return false;
		}
		
	}

	/** \fn modifierIntervenant($login,$mdp,$createur)
 	 * \brief Modifie un intervenant
 	 * 
 	 * Fonction modifiant un intervenant dans la BDD et retournant TRUE si la modification a reussi, FALSE sinon.
 	 *
 	 * @param $login string correspondant au login de l'intervenant a modifier
 	 * @param $mdp string correspondant au nouveau mot de passe de l'intervenant
 	 * @param $createur string correspondant au login de l'utilisateur modifiant l'intervenant (pour fichier .log)
 	 * @return $r bool contenant le resultat de la modification de l'intervenant
   */
	public function modifierIntervenant($login,$mdp,$createur) {
	
		//recherche s'il y a un intervenant $login dans la table portail
		$q0 = "SELECT login_p FROM portail WHERE login_p='$login'";
		$r0 = mysql_query($q0) or die('Selection impossible');
		
		//si l'intervenant existe
		if(mysql_num_rows($r0) >= 1) {
		
			$q = "UPDATE portail SET password_p='$mdp' WHERE login_p='$login'";
			$r = mysql_query($q) or die('Modification impossible');
			
			$p = new Portail();
			$p->creerLog("Intervenant \"".$login."\" modifie par \"".$createur."\" a ","../");
			
			return $r;
			
		}
		
		echo "Cet intervenant n'est pas dans la BDD";
		
	}

	/** \fn supprimerIntervenant($login,$createur)
 	 * \brief Supprime un intervenant
 	 * 
 	 * Fonction supprimant un intervenant dans la BDD et retournant TRUE si la suppression a reussi, FALSE sinon.
 	 *
 	 * @param $login string correspondant au login de l'intervenant a supprimer
 	 * @param $createur string correspondant au login de l'utilisateur supprimant l'intervenant (pour fichier .log)
 	 * @return $r bool contenant le resultat de la suppression de l'intervenant
 	 */
	public function supprimerIntervenant($login,$createur) {
		
		//fait correspondre les interventions de l'intervenant $login a l'intervenant generic
		$q0 = "UPDATE interventions SET login_p='generic' WHERE login_p='$login'";
		$r0 = mysql_query($q0) or die('Modification impossible');
		
		//supprime l'enregistrement de $login
		$q = "DELETE FROM portail WHERE login_p='$login'";
		$r = mysql_query($q) or die('Suppression impossible');
		
		$p = new Portail();
		$p->creerLog("Intervenant \"".$login."\" supprime par \"".$createur."\" a ","../");
		
		return $r;
		
	}
	
	/** \fn listerIntervenant($name)
 	 * \brief Liste les intervenants
 	 * 
 	 * Liste tous les intervenants (sauf le generic) de la BDD et affiche le resultat sous forme de liste deroulante
 	 * 
 	 * @param $name string correspondant au nom de la liste deroulante HTML
 	 * @return $r bool contenant le resultat de la selection
   */
	public function listerIntervenant($name) {
	
		//recherche dans la table portail tous les intervenants excepte generic
		$q = "SELECT login_p FROM portail WHERE droit_p='intervenant' AND login_p!='generic'";
		$r = mysql_query($q) or die('Recherche impossible');
		
		//si la liste des resultats n'est pas vide
		if (mysql_num_rows($r) >= 1) {
		
			echo "<label>Intervenant(s):</label><select name='$name'>";
			
			//affichage de tous les resultats dans une liste deroulante
			while($row = mysql_fetch_assoc($r)) {
				$login = $row['login_p'];
				echo "<option value='$login'>".$login."</option>";
			}
			
			echo "</select>";

		}
		
		else echo "Pas d'intervenant dans la BDD";
		
		return $r;
		
	}
	
	/** \fn envoyerEmail($login,$desc,$objet)
 	 * \brief Envoie un email a un intervenant
 	 *
 	 * @param $login string correspondant au login de l'intervenant
 	 * @param $contenu string correspondant au contenu de l'email
 	 * @param $objet string correspondant a l'objet de l'email
 	 * @return $r bool contenant le resultat de la selection de l'intervenant ou retourne le resultat de l'envoie
 	 */
	public function envoyerEmail($login,$contenu,$objet) {
		
		//selectionne l'email de l'intervenant a qui l'on souhaite envoyer un email
		$q = "SELECT email_p FROM portail WHERE login_p='$login'";
		$r = mysql_query($q) or die('Selection impossible');
	
		if (mysql_num_rows($r) >= 1) {
		
			while($row = mysql_fetch_assoc($r)) {
			
				$email = $row['email_p'];
				
				$expediteur = 'services@abcpro29.fr';
				
				$mailer = new PHPMailer();
				$mailer->IsHTML(true);
				$mailer->SetLanguage("fr","../phpmailer/language/"); //permet d'avoir les erreurs en francais
				$mailer->IsSMTP();
				$mailer->Host = 'auth.smtp.1and1.fr';
				$mailer->SMTPAuth = TRUE;
				$mailer->Username = $expediteur;
				$mailer->Password = 'm0td3p4ss3';
				$mailer->From = $expediteur;
				$mailer->FromName = 'ABC Pro';
				$mailer->AddReplyTo($expediteur);
				$mailer->Body = $contenu;
				$mailer->Subject = $objet; //peut etre vide
				$mailer->AddAddress($email); //ok pour hotmail, gmail, yopmail, mailinator, etudiant.univ-brest.fr (mais sans html pour ce dernier)

				$p = new Portail();

				if(!$mailer->Send()) {
   				echo "<script type='text/javascript'>alert(\"L'email n'a pas ete envoye - ".$mailer->ErrorInfo."\");</script>";
   				$p->creerLog("L'email \"".$objet."\" n'a pas ete envoye a l'intervenant \"".$login."\" a ","../");
   				return false;
				}
				
				else {
   				echo "<script type='text/javascript'>alert(\"Email envoye a l'intervenant ".$login."\");</script>";
					$p->creerLog("L'email \"".$objet."\" a ete envoye a l'intervenant \"".$login."\" a ","../");
   				return true;
				}
				
			}

		}
		
		else echo "Pas d'intervenant dans la BDD";
		
		return $r;
		
	}

} //fin class

?>
